// request.js 文件
const { getToken } = require('@/api/token.js');
const BASE_URL = "http://localhost:8080";

export async function request(options) {
    return new Promise(async (resolve, reject) => {
		
		//打印 接收参数
		console.log("请求参数",options.data);
		
        // 确保 headers 存在
        let headers = options.headers || {};
        const isToken = headers.isToken!== undefined? headers.isToken : true;
        console.log("isToken", isToken); 
        // 不覆盖已有 Content-Type，若不存在则设置为 application/json
        if (!headers['Content-Type']) {
            headers['Content-Type'] = 'application/json';
        }

        if (isToken) {
            try {
                console.log("检查 token...");
                const token = await getToken();
                // 修正逻辑判断
                if (!token) {
                    console.log("未找到 token，跳转到登录页面");
                    return reject("未找到 token");
                }
                console.log("加载 token:", token);
                headers['Authorization'] = 'Bearer'+ token;
            } catch (error) {
                console.error("获取 token 失败:", error);
                // 使用 uni.navigateTo 保证多平台兼容
                uni.navigateTo({
                    url: '/pacakgeBase/pages/login/login'
                });
                return reject("获取 token 失败");
            }
        }

        // 发起请求
        uni.request({
            url: BASE_URL + options.url,
            data: options.data || {},
            method: options.method || 'GET',
            header: headers,
            success: (res) => {
                // console.log("响应成功", res);
                if (res.statusCode === 401) {
                    console.log("token 失效，跳转到登录页面");
                    uni.navigateTo({
                        url: '/pacakgeBase/login/login'
                    });
                    reject(res);
                } else {
                    resolve(res);
                }
            },
            fail: (err) => {
                console.error("请求失败:", err);
                reject(err);
            }
        });
    });
}

